﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Control.conexion;

namespace Control.clases
{
    public class clsMantenimiento
    {
        private int idMantenimiento;
        private string manteFecha;
        private string manteHistorial;
        private int idUsuario;
        private int idEquipo;

        public clsMantenimiento()
        {
        }

        public clsMantenimiento(int _idUsuario, int _idEquipo)
        {
            this.idUsuario = _idUsuario;
            this.idEquipo = _idEquipo;
        }

        public clsMantenimiento(int _idEquipo)
        {
            this.idEquipo = _idEquipo;
        }

        internal clsUsuario clsUsuario
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
            }
        }

        internal clsEquipo clsEquipo
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
            }
        }

        public int MantenimientoFecha
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
            }
        }

        public string MantenimientoHistorial
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
            }
        }

        public int IdMantenimiento
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
            }
        }

        public int ingresarHistorial(string _manteHistorial)
        {
            try
            {
                clsConexion oDataBase = new clsConexion();
                int iReturn;
                DbCommand cmd = oDataBase.CargarComandoSP("USP_I_INSERTAR_TB_MANTENIMIENTO"); // insertar SP_INSERTAR

                // Ingresar parametros
                oDataBase.AddParametro(cmd, "@mantenimiento_historial", _manteHistorial);
                oDataBase.AddParametro(cmd, "@tb_usuario_id_usuario", this.idUsuario);
                oDataBase.AddParametro(cmd, "@tb_equipo_id_equipo", this.idEquipo);

                iReturn = oDataBase.EjecutarTransaccion(cmd);
                return iReturn;
            }
            catch (Exception ex)
            {
                throw new System.Exception(ex.Message, ex.InnerException);
            }
        }

        public string verHistorial(int id)
        {
            clsConexion oDataBase = new clsConexion();
            DataTable dt = new DataTable();

            try
            {
                DbCommand cmd = oDataBase.CargarComandoSP("USP_S_VER_2_TB_MANTENIMIENTO");
                oDataBase.AddParametro(cmd, "@id_mantenimiento", id);
                dt = oDataBase.EjecutarConsulta(cmd);
                if (dt != null)
                {
                    return dt.Rows[0]["Historial"].ToString();
                }
                else
                {
                    return null;
                }

            }
            catch (Exception ex)
            {
                throw new System.Exception(ex.Message, ex.InnerException);
                return null;
            }
        }

        public DataTable listarHistorial()
        {
            clsConexion oDataBase = new clsConexion();
            DataTable dt = new DataTable();

            try
            {
                DbCommand cmd = oDataBase.CargarComandoSP("USP_S_LISTAR_2_TB_MANTENIMIENTO");
                oDataBase.AddParametro(cmd, "@tb_equipo_id_equipo", this.idEquipo);
                dt = oDataBase.EjecutarConsulta(cmd);
                if (dt != null)
                {
                    return dt;
                }
                else
                {
                    return null;
                }

            }
            catch (Exception ex)
            {
                throw new System.Exception(ex.Message, ex.InnerException);
                return null;
            }
        }

        public string ConvertToHtmlFile(DataTable targetTable)
        {
            string myHtmlFile = "";
            int numeral = 1;

            if (targetTable == null)
            {
                throw new System.ArgumentNullException("targetTable");
            }
            else
            {
                //Continue.
            }


            //Get a worker object.
            StringBuilder myBuilder = new StringBuilder();
            myBuilder.Append("<table class='striped bordered hovered'>");

            //Add the headings row.


            myBuilder.Append("<tr align='left' valign='top'>");

            myBuilder.Append("<td>");
            myBuilder.Append("#");
            myBuilder.Append("</td>");

            foreach (DataColumn myColumn in targetTable.Columns)
            {
                myBuilder.Append("<td align='left' valign='top'>");
                myBuilder.Append(myColumn.ColumnName);
                myBuilder.Append("</td>");
            }

            myBuilder.Append("<td>");
            myBuilder.Append("Opciones");
            myBuilder.Append("</td>");

            myBuilder.Append("</tr>");


            //Add the data rows.
            foreach (DataRow myRow in targetTable.Rows)
            {
                myBuilder.Append("<tr align='left' valign='top'>");

                myBuilder.Append("<td>");
                myBuilder.Append(numeral.ToString());
                myBuilder.Append("</td>");

                foreach (DataColumn myColumn in targetTable.Columns)
                {
                    myBuilder.Append("<td align='left' valign='top'>");
                    myBuilder.Append(myRow[myColumn.ColumnName].ToString());
                    myBuilder.Append("</td>");
                }

                myBuilder.Append("<td>");
                myBuilder.Append("<a style='color:black;' id='OpenerHistorial' href='Historial.aspx?id=" + targetTable.Rows[numeral - 1]["ID"].ToString() + "'><i class='icon-eye'></i></a>");
                myBuilder.Append("</td>");

                myBuilder.Append("</tr>");
                numeral++;
            }


            //Close tags.
            myBuilder.Append("</table>");

            //Get the string for return.
            myHtmlFile = myBuilder.ToString();


            return myHtmlFile;
        }

    }
}
